home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / tools / developer-tools / andere sprachen / perl5 / perl5.002 / ext / sdbm_file / sdbm / dbu.i < prev    next >
Encoding:
Text File  |  1996-03-03  |  17.1 KB  |  2,897 lines

  1. # 1 "dbu.c"
  2. # 1 "/gnu/include/stdio.h" 1 3
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44. # 1 "/gnu/include/sys/cdefs.h" 1 3
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103. # 76 "/gnu/include/sys/cdefs.h" 3
  104.  
  105.  
  106.  
  107. # 42 "/gnu/include/stdio.h" 2 3
  108.  
  109.  
  110. # 1 "/gnu/include/machine/ansi.h" 1 3
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168. # 44 "/gnu/include/stdio.h" 2 3
  169.  
  170.  
  171. typedef    unsigned long     size_t;
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179. typedef long fpos_t;         
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190. struct __sbuf {
  191.     unsigned char *_base;
  192.     int    _size;
  193. };
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219. typedef    struct __sFILE {
  220.     unsigned char *_p;     
  221.     int    _r;         
  222.     int    _w;         
  223.     short    _flags;         
  224.     short    _file;         
  225.     struct    __sbuf _bf;     
  226.     int    _lbfsize;     
  227.  
  228.      
  229.     void    *_cookie;     
  230.     int    (*_close)  (void *)  ;
  231.     int    (*_read)   (void *, char *, int)  ;
  232.     fpos_t    (*_seek)   (void *, fpos_t, int)  ;
  233.     int    (*_write)  (void *, const char *, int)  ;
  234.  
  235.      
  236.     struct    __sbuf _ub;     
  237.     unsigned char *_up;     
  238.     int    _ur;         
  239.  
  240.      
  241.     unsigned char _ubuf[3];     
  242.     unsigned char _nbuf[1];     
  243.  
  244.      
  245.     struct    __sbuf _lb;     
  246.  
  247.      
  248.     int    _blksize;     
  249.     int    _offset;     
  250. } FILE;
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259. extern FILE **__sF;
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.      
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337. void     clearerr  (FILE *)  ;
  338. int     fclose  (FILE *)  ;
  339. int     feof  (FILE *)  ;
  340. int     ferror  (FILE *)  ;
  341. int     fflush  (FILE *)  ;
  342. int     fgetc  (FILE *)  ;
  343. int     fgetpos  (FILE *, fpos_t *)  ;
  344. char    *fgets  (char *, size_t, FILE *)  ;
  345. FILE    *fopen  (const char *, const char *)  ;
  346. int     fprintf  (FILE *, const char *, ...)  ;
  347. int     fputc  (int, FILE *)  ;
  348. int     fputs  (const char *, FILE *)  ;
  349. int     fread  (void *, size_t, size_t, FILE *)  ;
  350. FILE    *freopen  (const char *, const char *, FILE *)  ;
  351. int     fscanf  (FILE *, const char *, ...)  ;
  352. int     fseek  (FILE *, long, int)  ;
  353. int     fsetpos  (FILE *, const fpos_t *)  ;
  354. long     ftell  (const FILE *)  ;
  355. size_t     fwrite  (const void *, size_t, size_t, FILE *)  ;
  356. int     getc  (FILE *)  ;
  357. int     getchar  (void)  ;
  358. char    *gets  (char *)  ;
  359.  
  360. extern int sys_nerr;             
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368. void     perror  (const char *)  ;
  369. int     printf  (const char *, ...)  ;
  370. int     putc  (int, FILE *)  ;
  371. int     putchar  (int)  ;
  372. int     puts  (const char *)  ;
  373. int     remove  (const char *)  ;
  374. int     rename   (const char *, const char *)  ;
  375. void     rewind  (FILE *)  ;
  376. int     scanf  (const char *, ...)  ;
  377. void     setbuf  (FILE *, char *)  ;
  378. int     setvbuf  (FILE *, char *, int, size_t)  ;
  379. int     sprintf  (char *, const char *, ...)  ;
  380. int     sscanf  (const char *, const char *, ...)  ;
  381. FILE    *tmpfile  (void)  ;
  382. char    *tmpnam  (char *)  ;
  383. int     ungetc  (int, FILE *)  ;
  384. int     vfprintf  (FILE *, const char *, char * )  ;
  385. int     vprintf  (const char *, char * )  ;
  386. int     vsprintf  (char *, const char *, char * )  ;
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397. char    *ctermid  (char *)  ;
  398. FILE    *fdopen  (int, const char *)  ;
  399. int     fileno  (FILE *)  ;
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408. char    *fgetline  (FILE *, size_t *)  ;
  409. int     fpurge  (FILE *)  ;
  410. int     getw  (FILE *)  ;
  411. int     pclose  (FILE *)  ;
  412. FILE    *popen  (const char *, const char *)  ;
  413. int     putw  (int, FILE *)  ;
  414. void     setbuffer  (FILE *, char *, int)  ;
  415. int     setlinebuf  (FILE *)  ;
  416. char    *tempnam  (const char *, const char *)  ;
  417. int     snprintf  (char *, size_t, const char *, ...)  ;
  418. int     vsnprintf  (char *, size_t, const char *, char * )  ;
  419. int     vscanf  (const char *, char * )  ;
  420. int     vsscanf  (const char *, const char *, char * )  ;
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434. FILE    *funopen  (const void *,
  435.         int (*)(void *, char *, int),
  436.         int (*)(void *, const char *, int),
  437.         fpos_t (*)(void *, fpos_t, int),
  438.         int (*)(void *))  ;
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448. int    __srget  (FILE *)  ;
  449. int    __svfscanf  (FILE *, const char *, char * )  ;
  450. int    __swbuf  (int, FILE *)  ;
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459. static __inline int __sputc(int _c, FILE *_p) {
  460.     if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
  461.         return (*_p->_p++ = _c);
  462.     else
  463.         return (__swbuf(_c, _p));
  464. }
  465. # 352 "/gnu/include/stdio.h" 3
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489. # 1 "dbu.c" 2
  490.  
  491. # 1 "/gnu/include/sys/file.h" 1 3
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514. # 1 "/gnu/include/sys/types.h" 1 3
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553. typedef    unsigned char    u_char;
  554. typedef    unsigned short    u_short;
  555. typedef    unsigned int    u_int;
  556. typedef    unsigned long    u_long;
  557. typedef    unsigned short    ushort;         
  558.  
  559. typedef    char *    caddr_t;         
  560. typedef    long    daddr_t;         
  561. typedef    short    dev_t;             
  562. typedef    u_long    ino_t;             
  563. typedef    long    off_t;             
  564. typedef    u_short    nlink_t;         
  565. typedef    long    swblk_t;         
  566. typedef    long    segsz_t;         
  567. typedef    u_short    uid_t;             
  568. typedef    u_short    gid_t;             
  569. typedef    int    pid_t;             
  570. typedef    u_short    mode_t;             
  571. typedef u_long    fixpt_t;         
  572.  
  573.  
  574. typedef    struct    _uquad    { u_long val[2]; } u_quad;
  575. typedef    struct    _quad    {   long val[2]; } quad;
  576. typedef    long *    qaddr_t;     
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585. # 1 "/gnu/include/machine/types.h" 1 3
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624. typedef struct _physadr {
  625.     short r[1];
  626. } *physadr;
  627.  
  628. typedef struct label_t {         
  629.     int val[15];
  630. } label_t;
  631.  
  632. typedef    u_long    vm_offset_t;
  633. typedef    u_long    vm_size_t;
  634.  
  635.  
  636. # 71 "/gnu/include/sys/types.h" 2 3
  637.  
  638.  
  639.  
  640.  
  641. typedef    unsigned long     clock_t;
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651. typedef    long     time_t;
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668. typedef long    fd_mask;
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675. typedef    struct fd_set {
  676.     fd_mask    fds_bits[((( 256  )+((  (sizeof(fd_mask) * 8 )  )-1))/(  (sizeof(fd_mask) * 8 )  )) ];
  677. } fd_set;
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684. # 132 "/gnu/include/sys/types.h" 3
  685.  
  686.  
  687.  
  688.  
  689. # 23 "/gnu/include/sys/file.h" 2 3
  690.  
  691. # 1 "/gnu/include/sys/fcntl.h" 1 3
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.  
  742.  
  743.  
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798. # 117 "/gnu/include/sys/fcntl.h" 3
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846. struct flock {
  847.     short    l_type;         
  848.     short    l_whence;     
  849.     off_t    l_start;     
  850.     off_t    l_len;         
  851.     pid_t    l_pid;         
  852. };
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.  
  868. int    open  (const char *, int, ...)  ;
  869. int    creat  (const char *, mode_t)  ;
  870. int    fcntl  (int, int, ...)  ;
  871.  
  872. int    flock  (int, int)  ;
  873.  
  874.  
  875.  
  876.  
  877.  
  878. # 24 "/gnu/include/sys/file.h" 2 3
  879.  
  880. # 1 "/gnu/include/sys/unistd.h" 1 3
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.                  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974. # 25 "/gnu/include/sys/file.h" 2 3
  975.  
  976.  
  977. # 99 "/gnu/include/sys/file.h" 3
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991. # 2 "dbu.c" 2
  992.  
  993.  
  994. # 1 "sdbm.h" 1
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.                      
  1006.  
  1007.  
  1008.  
  1009. typedef struct {
  1010.     int dirf;                
  1011.     int pagf;                
  1012.     int flags;                
  1013.     long maxbno;                
  1014.     long curbit;                
  1015.     long hmask;                
  1016.     long blkptr;                
  1017.     int keyptr;                
  1018.     long blkno;                
  1019.     long pagbno;                
  1020.     char pagbuf[1024 ];            
  1021.     long dirbno;                
  1022.     char dirbuf[4096 ];            
  1023. } DBM;
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039. typedef struct {
  1040.     char *dptr;
  1041.     int dsize;
  1042. } datum;
  1043.  
  1044. extern datum nullitem;
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061. extern DBM *sdbm_open  (char *, int, int)  ;
  1062. extern void sdbm_close  (DBM *)  ;
  1063. extern datum sdbm_fetch  (DBM *, datum)  ;
  1064. extern int sdbm_delete  (DBM *, datum)  ;
  1065. extern int sdbm_store  (DBM *, datum, datum, int)  ;
  1066. extern datum sdbm_firstkey  (DBM *)  ;
  1067. extern datum sdbm_nextkey  (DBM *)  ;
  1068.  
  1069.  
  1070.  
  1071.  
  1072. extern DBM *sdbm_prep  (char *, char *, int, int)  ;
  1073. extern long sdbm_hash  (char *, int)  ;
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098. # 1 "/gnu/lib/gcc-lib/m68000-unknown-amigaos/2.7.2/include/errno.h" 1 3
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138. extern int errno;             
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.                      
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256. extern int errno;
  1257.  
  1258. # 104 "sdbm.h" 2
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266. # 120 "sdbm.h"
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274. # 1 "/gnu/include/ctype.h" 1 3
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.      
  1297.  
  1298.      
  1299.  
  1300.      
  1301.  
  1302.      
  1303.  
  1304.      
  1305.  
  1306.      
  1307.  
  1308.      
  1309.  
  1310.      
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321. extern const char *_ctype_;
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.  
  1334.  
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344. # 127 "sdbm.h" 2
  1345.  
  1346. # 1 "/gnu/include/setjmp.h" 1 3
  1347.  
  1348.  
  1349.  
  1350.  
  1351.  
  1352.  
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387. typedef int sigjmp_buf[17  + 1];
  1388.  
  1389. typedef int jmp_buf[17 ];
  1390.  
  1391.  
  1392.  
  1393.  
  1394. int    setjmp  (jmp_buf)  ;
  1395.  
  1396. void    longjmp  (jmp_buf, int)  ;
  1397.  
  1398. int    sigsetjmp  (sigjmp_buf, int)  ;
  1399. void    volatile siglongjmp  (sigjmp_buf, int)  ;
  1400.  
  1401.  
  1402. int    _setjmp  (jmp_buf)  ;
  1403. void    volatile _longjmp  (jmp_buf, int)  ;
  1404. void    longjmperror  (void)  ;
  1405.  
  1406.  
  1407.  
  1408.  
  1409. # 128 "sdbm.h" 2
  1410.  
  1411.  
  1412.  
  1413.  
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420. # 1 "/gnu/include/sys/param.h" 1 3
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.  
  1460.  
  1461.  
  1462.  
  1463.  
  1464.  
  1465.  
  1466.  
  1467.  
  1468.  
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  
  1474.  
  1475.  
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484.  
  1485.  
  1486. # 1 "/gnu/include/sys/syslimits.h" 1 3
  1487.  
  1488.  
  1489.  
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541. # 66 "/gnu/include/sys/param.h" 2 3
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565. # 1 "/gnu/include/sys/signal.h" 1 3
  1566.  
  1567.  
  1568. # 1 "/gnu/include/signal.h" 1 3
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.  
  1592.  
  1593.  
  1594.  
  1595.  
  1596.  
  1597.  
  1598.  
  1599. # 1 "/gnu/include/sys/signal.h" 1 3
  1600. # 10 "/gnu/include/sys/signal.h" 3
  1601.  
  1602. # 31 "/gnu/include/signal.h" 2 3
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655. typedef    void (*sig_t)();
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664. typedef unsigned int sigset_t;
  1665.  
  1666.  
  1667. int    sigaddset  (sigset_t *, int)  ;
  1668. int    sigdelset  (sigset_t *, int)  ;
  1669. int    sigemptyset  (sigset_t *)  ;
  1670. int    sigfillset  (sigset_t *)  ;
  1671. int    sigismember  (const sigset_t *, int)  ;
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683. struct    sigaction {
  1684.     void    (*sa_handler)();     
  1685.     sigset_t sa_mask;         
  1686.     int    sa_flags;         
  1687. };
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706. struct    sigvec {
  1707.     void    (*sv_handler)();     
  1708.     int    sv_mask;         
  1709.     int    sv_flags;         
  1710. };
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718. struct    sigaltstack {
  1719.     char    *ss_base;         
  1720.     int    ss_len;             
  1721.     int    ss_onstack;         
  1722. };
  1723.  
  1724.  
  1725.  
  1726.  
  1727. struct    sigstack {
  1728.     char    *ss_sp;             
  1729.     int    ss_onstack;         
  1730. };
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739. struct    sigcontext {
  1740.     int    sc_onstack;         
  1741.     int    sc_mask;         
  1742.     int    sc_sp;             
  1743.     int    sc_fp;             
  1744.     int    sc_ap;             
  1745.     int    sc_pc;             
  1746.     int    sc_ps;             
  1747. };
  1748.  
  1749.  
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758. # 210 "/gnu/include/signal.h" 3
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769.  
  1770. void    (*signal  (int, void (*)  (int)  )  )  (int)  ;
  1771. int    raise  (int)  ;
  1772.  
  1773. int    kill  (pid_t, int)  ;
  1774. int    sigaction  (int, const struct sigaction *, struct sigaction *)  ;
  1775. int    sigpending  (sigset_t *)  ;
  1776. int    sigprocmask  (int, const sigset_t *, sigset_t *)  ;
  1777. int    sigsuspend  (const sigset_t *)  ;
  1778.  
  1779.  
  1780. int    killpg  (pid_t, int)  ;
  1781. void    psignal  (unsigned, const char *)  ;
  1782. int    sigblock  (int)  ;
  1783. int    siginterrupt  (int, int)  ;
  1784. int    sigpause  (int)  ;
  1785. int    sigreturn  (struct sigcontext *)  ;
  1786. int    sigsetmask  (int)  ;
  1787. int    sigstack  (const struct sigstack *, struct sigstack *)  ;
  1788. int    sigvec  (int, struct sigvec *, struct sigvec *)  ;
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795. # 3 "/gnu/include/sys/signal.h" 2 3
  1796.  
  1797.  
  1798.  
  1799.  
  1800.  
  1801.  
  1802.  
  1803.  
  1804. # 89 "/gnu/include/sys/param.h" 2 3
  1805.  
  1806.  
  1807.  
  1808. # 1 "/gnu/include/machine/param.h" 1 3
  1809.  
  1810.  
  1811.  
  1812.  
  1813.  
  1814.  
  1815.  
  1816.  
  1817.  
  1818.  
  1819.  
  1820.  
  1821.  
  1822.  
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833.  
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869.  
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.  
  1876.  
  1877.  
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.  
  1931.  
  1932.  
  1933.  
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.  
  1951. # 156 "/gnu/include/machine/param.h" 3
  1952.  
  1953.  
  1954. # 168 "/gnu/include/machine/param.h" 3
  1955.  
  1956.  
  1957.  
  1958. # 92 "/gnu/include/sys/param.h" 2 3
  1959.  
  1960. # 1 "/gnu/include/machine/endian.h" 1 3
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.  
  1988.  
  1989.  
  1990.  
  1991.  
  1992.  
  1993.  
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004.  
  2005.  
  2006.  
  2007.  
  2008.  
  2009.  
  2010.  
  2011. unsigned long    htonl  (unsigned long)  ;
  2012. unsigned short    htons  (unsigned short)  ;
  2013. unsigned long    ntohl  (unsigned long)  ;
  2014. unsigned short    ntohs  (unsigned short)  ;
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038. # 93 "/gnu/include/sys/param.h" 2 3
  2039.  
  2040. # 1 "/gnu/include/machine/limits.h" 1 3
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054.  
  2055.  
  2056.  
  2057.  
  2058.  
  2059.  
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.  
  2076.  
  2077.  
  2078.  
  2079.  
  2080.  
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130.  
  2131.  
  2132.  
  2133. # 94 "/gnu/include/sys/param.h" 2 3
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186.                  
  2187.  
  2188.  
  2189.  
  2190.  
  2191.  
  2192.  
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.  
  2217.  
  2218.  
  2219.  
  2220.  
  2221.  
  2222.  
  2223.  
  2224.  
  2225.  
  2226.  
  2227.  
  2228.  
  2229.  
  2230.  
  2231.  
  2232.  
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.  
  2252.  
  2253.  
  2254.  
  2255.  
  2256.  
  2257.  
  2258.  
  2259.  
  2260.  
  2261.  
  2262.  
  2263.  
  2264.  
  2265.  
  2266.  
  2267.  
  2268.  
  2269. # 138 "sdbm.h" 2
  2270.  
  2271.  
  2272.  
  2273.  
  2274.  
  2275.  
  2276.  
  2277.  
  2278.  
  2279. # 1 "/gnu/include/sys/stat.h" 1 3
  2280.  
  2281.  
  2282.  
  2283.  
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.  
  2319.  
  2320. # 63 "/gnu/include/sys/stat.h" 3
  2321.  
  2322. struct    stat
  2323. {
  2324.     dev_t    st_dev;
  2325.     ino_t    st_ino;
  2326.     unsigned short st_mode;
  2327.     short    st_nlink;
  2328.     short    st_uid;
  2329.     short    st_gid;
  2330.     dev_t    st_rdev;
  2331.     off_t    st_size;
  2332.     time_t    st_atime;
  2333.     int    st_spare1;
  2334.     time_t    st_mtime;
  2335.     int    st_spare2;
  2336.     time_t    st_ctime;
  2337.     int    st_spare3;
  2338.     long    st_blksize;
  2339.     long    st_blocks;
  2340.     long    st_spare4[2];
  2341. };
  2342.  
  2343.  
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.  
  2384.  
  2385.  
  2386.  
  2387.  
  2388.  
  2389.  
  2390.  
  2391.                      
  2392.  
  2393.  
  2394.  
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410.  
  2411. mode_t    umask  (mode_t)  ;
  2412. int    chmod  (const char *, mode_t)  ;
  2413. int    fstat  (int, struct stat *)  ;
  2414. int    mkdir  (const char *, mode_t)  ;
  2415. int    mkfifo  (const char *, mode_t)  ;
  2416. int    stat  (const char *, struct stat *)  ;
  2417.  
  2418. int    fchmod  (int, mode_t)  ;
  2419. int    lstat  (const char *, struct stat *)  ;
  2420.  
  2421.  
  2422.  
  2423.  
  2424.  
  2425. # 147 "sdbm.h" 2
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446. # 1 "/gnu/include/strings.h" 1 3
  2447.  
  2448.  
  2449.  
  2450.  
  2451.  
  2452.  
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.  
  2473.  
  2474.  
  2475.  
  2476.  
  2477.  
  2478.  
  2479.  
  2480.  
  2481.  
  2482. # 1 "/gnu/include/string.h" 1 3
  2483.  
  2484.  
  2485.  
  2486.  
  2487.  
  2488.  
  2489.  
  2490.  
  2491.  
  2492.  
  2493.  
  2494.  
  2495.  
  2496.  
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516.  
  2517.  
  2518.  
  2519.  
  2520.  
  2521.  
  2522.  
  2523.  
  2524.  
  2525.  
  2526.  
  2527.  
  2528.  
  2529.  
  2530.  
  2531.  
  2532.  
  2533.  
  2534. void    *memchr  (const void *, int, size_t)  ;
  2535. int     memcmp  (const void *, const void *, size_t)  ;
  2536. void    *memcpy  (void *, const void *, size_t)  ;
  2537. void    *memmove  (void *, const void *, size_t)  ;
  2538. void    *memset  (void *, int, size_t)  ;
  2539. char    *strcat  (char *, const char *)  ;
  2540. char    *strchr  (const char *, int)  ;
  2541. int     strcmp  (const char *, const char *)  ;
  2542. int     strcoll  (const char *, const char *)  ;
  2543. char    *strcpy  (char *, const char *)  ;
  2544. size_t     strcspn  (const char *, const char *)  ;
  2545. char    *strerror  (int)  ;
  2546. size_t     strlen  (const char *)  ;
  2547. char    *strncat  (char *, const char *, size_t)  ;
  2548. int     strncmp  (const char *, const char *, size_t)  ;
  2549. char    *strncpy  (char *, const char *, size_t)  ;
  2550. char    *strpbrk  (const char *, const char *)  ;
  2551. char    *strrchr  (const char *, int)  ;
  2552. size_t     strspn  (const char *, const char *)  ;
  2553. char    *strstr  (const char *, const char *)  ;
  2554. char    *strtok  (char *, const char *)  ;
  2555. size_t     strxfrm  (char *, const char *, size_t)  ;
  2556.  
  2557.  
  2558.  
  2559. int     bcmp  (const void *, const void *, size_t)  ;
  2560. void     bcopy  (const void *, void *, size_t)  ;
  2561. void     bzero  (void *, size_t)  ;
  2562. int     ffs  (int)  ;
  2563. char    *index  (const char *, int)  ;
  2564. void    *memccpy  (void *, const void *, int, size_t)  ;
  2565. char    *rindex  (const char *, int)  ;
  2566. int     strcasecmp  (const char *, const char *)  ;
  2567. char    *strdup  (const char *)  ;
  2568. void     strmode  (int, char *)  ;
  2569. int     strncasecmp  (const char *, const char *, size_t)  ;
  2570. char    *strsep  (char **, const char *)  ;
  2571. void     swab  (const void *, void *, size_t)  ;
  2572. int     stricmp  (const char *, const char *)  ;
  2573. int     strnicmp  (const char *, const char *, size_t)  ;
  2574.  
  2575.  
  2576.  
  2577.  
  2578. # 36 "/gnu/include/strings.h" 2 3
  2579.  
  2580. # 167 "sdbm.h" 2
  2581.  
  2582.  
  2583.  
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589.  
  2590.  
  2591.  
  2592.  
  2593.  
  2594.  
  2595.  
  2596.  
  2597.  
  2598.  
  2599.  
  2600.  
  2601.  
  2602.  
  2603.  
  2604.  
  2605.  
  2606.  
  2607.  
  2608.  
  2609.  
  2610.  
  2611.  
  2612.  
  2613.  
  2614.  
  2615.  
  2616.  
  2617.  
  2618.  
  2619.  
  2620.  
  2621.  
  2622.  
  2623.  
  2624.  
  2625.  
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.  
  2648.  
  2649. # 4 "dbu.c" 2
  2650.  
  2651.  
  2652.  
  2653.  
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660. extern int    getopt();
  2661. extern char    *strchr();
  2662. extern void    oops();
  2663.  
  2664. char *progname;
  2665.  
  2666. static int rflag;
  2667. static char *usage = "%s [-R] cat | look |... dbmname";
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680. typedef struct {
  2681.     char *sname;
  2682.     int scode;
  2683.     int flags;
  2684. } cmd;
  2685.  
  2686. static cmd cmds[] = {
  2687.  
  2688.     "fetch", 1 ,     0x0000 ,
  2689.     "get", 1 ,        0x0000 ,
  2690.     "look", 1 ,        0x0000 ,
  2691.     "add", 2 ,        0x0002 ,
  2692.     "insert", 2 ,    0x0002 ,
  2693.     "store", 2 ,    0x0002 ,
  2694.     "delete", 3 ,    0x0002 ,
  2695.     "remove", 3 ,    0x0002 ,
  2696.     "dump", 4 ,        0x0000 ,
  2697.     "list", 4 ,         0x0000 ,
  2698.     "cat", 4 ,        0x0000 ,
  2699.     "creat", 7 ,    0x0002  | 0x0200  | 0x0400 ,
  2700.     "new", 7 ,        0x0002  | 0x0200  | 0x0400 ,
  2701.     "build", 5 ,    0x0002  | 0x0200 ,
  2702.     "squash", 6 ,    0x0002 ,
  2703.     "compact", 6 ,    0x0002 ,
  2704.     "compress", 6 ,    0x0002 
  2705. };
  2706.  
  2707.  
  2708.  
  2709. static cmd *parse();
  2710. static void badk(), doit(), prdatum();
  2711.  
  2712. int
  2713. main(argc, argv)
  2714. int    argc;
  2715. char *argv[];
  2716. {
  2717.     int c;
  2718.     register cmd *act;
  2719.     extern int optind;
  2720.     extern char *optarg;
  2721.  
  2722.     progname = argv[0];
  2723.  
  2724.     while ((c = getopt(argc, argv, "R")) != (-1) )
  2725.         switch (c) {
  2726.         case 'R':            
  2727.             rflag++;
  2728.             break;
  2729.  
  2730.         default:
  2731.             oops("usage: %s", usage);
  2732.             break;
  2733.         }
  2734.  
  2735.     if ((argc -= optind) < 2)
  2736.         oops("usage: %s", usage);
  2737.  
  2738.     if ((act = parse(argv[optind])) == 0 )
  2739.         badk(argv[optind]);
  2740.     optind++;
  2741.     doit(act, argv[optind]);
  2742.     return 0;
  2743. }
  2744.  
  2745. static void
  2746. doit(act, file)
  2747. register cmd *act;
  2748. char *file;
  2749. {
  2750.     datum key;
  2751.     datum val;
  2752.     register DBM *db;
  2753.     register char *op;
  2754.     register int n;
  2755.     char *line;
  2756.  
  2757.  
  2758.  
  2759.  
  2760.  
  2761.     if ((db = sdbm_open; (file, act->flags, 0644)) == 0 )
  2762.         oops("cannot open: %s", file);
  2763.  
  2764.     if ((line = (char *) malloc(8192 )) == 0 )
  2765.         oops("%s: cannot get memory", "line alloc");
  2766.  
  2767.     switch (act->scode) {
  2768.  
  2769.     case 1 :
  2770.         while (fgets(line, 8192 , (__sF[0]) ) != 0 ) {
  2771.             n = strlen(line) - 1;
  2772.             line[n] = 0;
  2773.             key.dptr = line;
  2774.             key.dsize = n;
  2775.             val = sdbm_fetch; (db, key);
  2776.             if (val.dptr != 0 ) {
  2777.                 prdatum((__sF[1]) , val);
  2778.                 __sputc(  '\n'  ,   (__sF[1])  )  ;
  2779.                 continue;
  2780.             }
  2781.             prdatum((__sF[2]) , key);
  2782.             fprintf((__sF[2]) , ": not found.\n");
  2783.         }
  2784.         break;
  2785.     case 2 :
  2786.         break;
  2787.     case 3 :
  2788.         while (fgets(line, 8192 , (__sF[0]) ) != 0 ) {
  2789.             n = strlen(line) - 1;
  2790.             line[n] = 0;
  2791.             key.dptr = line;
  2792.             key.dsize = n;
  2793.             if (sdbm_delete; (db, key) == -1) {
  2794.                 prdatum((__sF[2]) , key);
  2795.                 fprintf((__sF[2]) , ": not found.\n");
  2796.             }
  2797.         }
  2798.         break;
  2799.     case 4 :
  2800.         for (key = sdbm_firstkey; (db); key.dptr != 0; 
  2801.              key = sdbm_nextkey; (db)) {
  2802.             prdatum((__sF[1]) , key);
  2803.             __sputc(  '\t'  ,   (__sF[1])  )  ;
  2804.             prdatum((__sF[1]) , sdbm_fetch; (db, key));
  2805.             __sputc(  '\n'  ,   (__sF[1])  )  ;
  2806.         }
  2807.         break;
  2808.     case 5 :
  2809.  
  2810.  
  2811.  
  2812.         while (fgets(line, 8192 , (__sF[0]) ) != 0 ) {
  2813.             n = strlen(line) - 1;
  2814.             line[n] = 0;
  2815.             key.dptr = line;
  2816.             if ((op = strchr(line, '\t')) != 0) {
  2817.                 key.dsize = op - line;
  2818.                 *op++ = 0;
  2819.                 val.dptr = op;
  2820.                 val.dsize = line + n - op;
  2821.             }
  2822.             else
  2823.                 oops("bad input; %s", line);
  2824.     
  2825.             if (sdbm_store; (db, key, val, 1 ) < 0) {
  2826.                 prdatum((__sF[2]) , key);
  2827.                 fprintf((__sF[2]) , ": ");
  2828.                 oops("store: %s", "failed");
  2829.             }
  2830.         }
  2831.  
  2832.  
  2833.  
  2834.         break;
  2835.     case 6 :
  2836.         break;
  2837.     case 7 :
  2838.         break;
  2839.     }
  2840.  
  2841.     sdbm_close; (db);
  2842. }
  2843.  
  2844. static void
  2845. badk(word)
  2846. char *word;
  2847. {
  2848.     register int i;
  2849.  
  2850.     if (progname)
  2851.         fprintf((__sF[2]) , "%s: ", progname);
  2852.     fprintf((__sF[2]) , "bad keywd %s. use one of\n", word);
  2853.     for (i = 0; i < (int)(sizeof (cmds)/sizeof (cmd)) ; i++)
  2854.         fprintf((__sF[2]) , "%-8s%c", cmds[i].sname,
  2855.             ((i + 1) % 6 == 0) ? '\n' : ' ');
  2856.     fprintf((__sF[2]) , "\n");
  2857.     exit(1);
  2858.      
  2859. }
  2860.  
  2861. static cmd *
  2862. parse(str)
  2863. register char *str;
  2864. {
  2865.     register int i = (sizeof (cmds)/sizeof (cmd)) ;
  2866.     register cmd *p;
  2867.     
  2868.     for (p = cmds; i--; p++)
  2869.         if (strcmp(p->sname, str) == 0)
  2870.             return p;
  2871.     return 0 ;
  2872. }
  2873.  
  2874. static void
  2875. prdatum(stream, d)
  2876. FILE *stream;
  2877. datum d;
  2878. {
  2879.     register int c;
  2880.     register char *p = d.dptr;
  2881.     register int n = d.dsize;
  2882.  
  2883.     while (n--) {
  2884.         c = *p++ & 0377;
  2885.         if (c & 0200) {
  2886.             fprintf(stream, "M-");
  2887.             c &= 0177;
  2888.         }
  2889.         if (c == 0177 || c < ' ') 
  2890.             fprintf(stream, "^%c", (c == 0177) ? '?' : c + '@');
  2891.         else
  2892.             __sputc( c ,   stream ) ;
  2893.     }
  2894. }
  2895.  
  2896.  
  2897.